﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ExcelCOM = Microsoft.Office.Interop.Excel;
using System.Runtime; 
using DataAccess;
namespace QLDSVCNTT_Nhom1
{
    public partial class frmDanhSachNguoiDung : Form
    {
        public frmDanhSachNguoiDung()
        {
            InitializeComponent();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            //timer_QuanLyNguoiDung.Enabled = false;
            this.Close();
        }

        private void frmDanhSachNguoiDung_Load(object sender, EventArgs e)
        {
            LoadUsers();
            //timer_QuanLyNguoiDung.Enabled = true;
        }

        private void LoadUsers()
        {
            List<DangNhapHeThong> list = DangNhapHeThong.All();
            lvUsers.Items.Clear();
            int i = 1;
            foreach (DangNhapHeThong item in list)
            {
                ListViewItem lv = lvUsers.Items.Add(i.ToString());
                lv.SubItems.Add(item.TenDangNhap.ToString());
                lv.SubItems.Add(item.MatKhau.ToString());
                lv.SubItems.Add(item.QuyenHan.ToString());
                int qh = item.QuyenHan;
                switch (qh)
                {
                    case 1:
                        lv.SubItems.Add("Admin");
                        break;
                    case 2:
                        lv.SubItems.Add("Giang vien");
                        break;
                    case 3:
                        lv.SubItems.Add("Sinh Vien");
                        break;
                    default:
                        break;
                }
                i++;
            }
        }

        private void btnthem_Click(object sender, EventArgs e)
        {
            frmThemNguoiDung frm = new frmThemNguoiDung();
            frm.ShowDialog();
            LoadUsers();
        }

       
        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (lvUsers.SelectedItems.Count > 0)
            {
                DialogResult dl= MessageBox.Show("bạn có thực sự muốn xóa người dùng hay không", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                if (dl ==DialogResult.OK)
                {
                    DangNhapHeThong dn = new DangNhapHeThong();
                    dn.TenDangNhap = lvUsers.SelectedItems[0].SubItems[1].Text;
                    if (DangNhapHeThong.Delete(dn) > 0)
                    {
                        MessageBox.Show("Xóa người dùng thành công", "Thông báo");
                        LoadUsers();
                    }
                    else
                    {
                        MessageBox.Show("Xóa không thành công", "Thông báo");
                    }
                }
            }
            else
	        {
                MessageBox.Show("Bạn chưa chọn thông tin để xóa. Vui lòng kiểm tra lại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
	        }
        }

        private void btnResetPass_Click(object sender, EventArgs e)
        {
            FrmResetPass frm = new FrmResetPass();
            frm.ShowDialog();
            LoadUsers();
        }

        private void timer_QuanLyNguoiDung_Tick(object sender, EventArgs e)
        {
            if (lvUsers.SelectedItems.Count >0)
            {
                return;
            }
            else
            {
                LoadUsers();
            }
        }


        private void toolStripButtonFind_Click(object sender, EventArgs e)
        {
            if (txtFind.Text != "" && cbbFind.SelectedItem !=null)
            {
                //timer_QuanLyNguoiDung.Enabled = false;
                string chuoitim = txtFind.Text;
                string chon = cbbFind.SelectedItem.ToString();
                TimKiem(chuoitim, chon);
            }
            else
            {
                MessageBox.Show("bạn chua nhập gì để tìm","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }
        private void LayListView(DangNhapHeThong item,int i)
        {
            ListViewItem lv = lvUsers.Items.Add(i.ToString());
            lv.SubItems.Add(item.TenDangNhap.ToString());
            lv.SubItems.Add(item.MatKhau.ToString());
            lv.SubItems.Add(item.QuyenHan.ToString());
            int qh = item.QuyenHan;
            switch (qh)
            {
                case 1:
                    lv.SubItems.Add("Admin");
                    break;
                case 2:
                    lv.SubItems.Add("Giang vien");
                    break;
                case 3:
                    lv.SubItems.Add("Sinh Vien");
                    break;
                default:
                    break;
            }
        }

        private void TimKiem(string chuoitim, string chon)
        {
            List<DangNhapHeThong> list = null;
            switch (chon)
            {
                case "Tên Đăng Nhập":
                    lvUsers.Items.Clear();
                    list = DangNhapHeThong.FindByName(chuoitim);
                    LoadListView(list);
                    break;
                case "Quyền Hạn":
                    string s = txtFind.Text;
                    int i =0;
                    if (String.Compare(s,"Admin",true)==0)
                    {
                         i = 1;
                    }
                    else
                    {
                        if (String.Compare(s,"Giaovien",true)==0||String.Compare(s,"Giao vien",true)==0)
                        {
                            i = 2;
                        }
                        else
                        {
                            if (String.Compare(s,"Sinhvien",true)==0||String.Compare(s,"Sinh vien",true)==0)
                            {
                                i = 3;
                            }
                        }
                    }
                    list = DangNhapHeThong.FindQuyenHan(i);
                    LoadListView(list);
                    break;
                default:
                    this.toolStripButtonFind.PerformClick();
                    break;
            }
        }

        private void LoadListView(List<DangNhapHeThong> list)
        {
            lvUsers.Items.Clear();
            int i = 1;
            foreach (DangNhapHeThong item in list)
            {
                LayListView(item,i);
                i++;
            }
        }

        private void txtFind_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Convert.ToInt16(e.KeyChar) == 13)
            {
                toolStripButtonFind.PerformClick();
            }
        }

        private void refeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LoadUsers();
            //timer_QuanLyNguoiDung.Enabled = true;
        }

        private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            btnXoa_Click(sender,e);
        }
        private void resetPasswordToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lvUsers.SelectedItems.Count >0)
            {
                string ten = lvUsers.SelectedItems[0].SubItems[1].Text;
                FrmResetPass frm = new FrmResetPass(ten);
                frm.ShowDialog();
                LoadUsers();
            }
            
        }

        // phuong thuc save thành file excel:

        private void saveToolStripButton_Click(object sender, EventArgs e)
        {
            ListView root = lvUsers;
            string name = "DanhSachNguoiDung";
            saveFileDialog.Filter = "Save File(*.xls)|*.xls";
            saveFileDialog.FileName = "";
            saveFileDialog.Title = "Save to...";
            if (saveFileDialog.ShowDialog() == DialogResult.OK)
            {
                int num = SaveListviewToExcel.Export2Excel(root, System.IO.Path.GetFullPath(saveFileDialog.FileName),name);
                if (num == 1)
                {
                    MessageBox.Show("luu thanh cong");
                }
                else
                {
                    MessageBox.Show("Luu khong thanh cong");
                }
            }
        }
    }
}
